// 核心代码


struct ListNode {
	int val;
	struct ListNode *next;
	ListNode(int x) :
			val(x), next(NULL) {
	}
};
class Solution {
public:
    ListNode* ReverseList(ListNode* pHead) {
        //链表反转
        ListNode *newHead = nullptr;  //新链表的头指针
        ListNode *temp = nullptr; //用于保存旧链表下一节点
        //循环条件是遍历旧链表
        while (pHead){
            //保存旧链表当前头节点的下一节点
            temp = pHead->next;
            //当前头节点后接上上轮的新链表
            pHead->next = newHead;
            //将当前(头)节点的设为新链表的头节点
            newHead = pHead;
            //旧链表头指针到下一次的头节点
            pHead = temp;

        }
        return newHead;
    }
};